Linux 磁盘管理之-LVM

  1. LVM图解
  2. LVM创建流程
  3. LVM实战
    1. 战场一: 空磁盘划分LVM,并挂载使用.
    2. 战场二: 逻辑卷拉伸
    3. 战场三: 逻辑卷缩小
    4. 战场三: 卸载加入到 VG 中的 PV
  • 注意事项:
  • LVM图解

    LVM = Logic Volume Manager
    PE = Physical Extent (LVM的最小操作单元,默认为4M)
    PV = Physical Volume
    VG = Volume Group
    LV = Logic Volume


                  +------------PV----------------+          +-------------PV---------------+                        
    /dev/sda <--- | ____ ____ ____ ____ | | ____ ____ ____ ____ | ---> /dev/sdb
    | |PE| |PE|....|PE| |PE| | .... | |PE| |PE|....|PE| |PE| |
    +------------------------------+ +------------------------------+
    | |
    | |
    \_/ \_/
    +---------------------------VG----------------------------+
    | ____ ____ ____ ____ ..... ____ ____ ____ |
    | |PE| |PE| |PE| |PE| ..... |PE| |PE| |PE| |
    +---------------------------------------------------------+
    | | |
    | | |
    \_/ \_/ \_/
    +------LV1-----+ +------LV2-----+ +------LV3-----+
    | ____ ____ | | ____ ____ | | ____ ____ |

    | |PE| .. |PE| | | |PE| .. |PE| | | |PE| .. |PE| |
    +--------------+ +--------------+ +--------------+

    LVM创建流程

    从上面的图解中,我们可以三步创建出 LV:

    1.把磁盘初始化为PV    --->   2.基于PV创建VG   --->   3.在VG内划分LV

    创建出LV后即作为系统可用的逻辑磁盘,但是必须在上面创建文件系统后才可以挂载使用。

    4.在LV上创建文件系统   --->   5. 挂载/使用

    LVM实战

    战场一: 空磁盘划分LVM,并挂载使用.
    1. #fdisk -l --- 查看磁盘信息  

    2. #pvcreate /dev/sdb /dev/sdc  --- 初始化磁盘为物理卷
    #pvdisplay

    3. #vgcreate vg_name /dev/sdb /dev/sdc --- 把物理卷中的 PE 添加至卷组中
    #vgdisplay

    4. #lvcreate -n lv_name -L 4G vg_name --- 从 VG 取出所需的 PE 创建 LV,创建好的 LV 将在 /dev/vg_name/lv_name 中.或者使用 -l 指定 PE 数量
    #lvdisplay

    5. #mkfs.ext4 /dev/vg_name/lv_name --- 在 LV 上创建文件系统

    6. #mount /dev/vg_name/lv_name /mount_point --- 挂载 LV 就可以使用了

    7. # vim /etc/fstab -- 添加如下,设置开机自动挂载
    /dev/vg_name/lv_name /mount_point ext4 defaults 0 0
    战场二: 逻辑卷拉伸

    拉伸逻辑卷前,首先要确保 VG 中剩余足够多的PE.,如果 VG 有足够的PE ,则不需要重新创建PV来拉伸VG.

    ① 首先拉伸卷组:

    1. 准备好新磁盘,并格式化为 PV,为拉伸卷组提供PE

      #pvcreate /dev/sdd
    2. 把新创建的 PV 并入 VG

    #vgextend vg_name /dev/sdd
    #vgdisplay

    ② 再扩容 LV

    #lvextend -L  +10G  /dev/vg_name/lv_name
    #lvdisplay

    ③ 最后更新文件系统.(文件系统可能不能自动识别 扩容的LV,需要手动更新)

    #resize2fs  /dev/vg_name/lv_name

    战场三: 逻辑卷缩小

    逻辑卷的缩小必须严格按照步骤来,否则将损坏数据.

    1. 首先卸载挂载的 LV

      #umount  /dev/vg_name/lv_name
    2. 然后缩小文件系统

      #resize2fs  /dev/vg_name/lv_name  5G
    3. 最后才缩小 LV

      #lvreduce -L -5 /dev/vg_name/lv_name
    4. 重新挂载 LV 使用

      #mount  /dev/vg_name/lv_name  /mount_point
    战场三: 卸载加入到 VG 中的 PV

    同缩小逻辑卷一样,需要注意:确保整个系统所剩空间充足. 避免数据的损坏

    ##pvmove /dev/sdd /dev/sdb    --- 将sdd中的数据传到sdb中
    #vgreduce vg_name /dev/sdd --- 把sdd从 vg 中移除
    #vgdisplay


    注意事项:

    1. 使用 fdisk 工具格式化过的硬盘分区不能创建 LVM
    2. 除非必要,尽量不要缩小 LVM 相关单元.操作过程中一定要注意系统磁盘剩余空间
    3. 此外使用 pvs vgs lvs 可以查看 LVM 简要的信息

      —By LuoYe [QQ:291268775]
         2014/10/23